
import 'dart:io';
import 'package:eq/cmd.dart';
import 'package:eq/native/constants.dart';
import 'package:eq/src/core.dart';
import 'package:eq/src/interface.dart';
import 'package:eq/src/interpreter.dart';
import 'package:eq/src/utils.dart';
/// EQ 语言主文件
// print(1.4 - 1.2);
// print(0.2);
// print(1.2);
// print(1.4);
// print(5 / 3);
int main(List arg) {
  var temp = analyzeCMD(arg);
  if (temp == CMDGo.noOperate) {
    exit(0);
  }

  ///格式化代码
  if (temp == CMDGo.formatCode) {
    exit(0);
  }

  File f;

  ///工程分析
  if (temp == CMDGo.filePath) {
    f = File(arg[0]);
  } else {
    ///目录工程，分析配置文件eq.json,找主脚本以及增加一些定义信息.
    ///注意文件后缀
    f = File('path');
  }
  Interpreter.getInstance().proDir = f.parent.path; //设置项目基本属性时使用filepath
  Interpreter.getInstance().mainModule = main_module;

  ///创建解释器并进行词法分析
  ///进行语法分析
  //loadModule(Interpreter.getInstance().mainModule);
  interpreterCompile(f, Interpreter.getInstance().mainModule);
  Interpreter.getInstance().module[main_module]!.setLoad = true;

  ///开始运行语句
  if (temp == CMDGo.filePath || temp == CMDGo.runCode) {
    loadModule(eq_core);
    StatementResult result = interpreterRun(
        Interpreter.getInstance().mainModule,
        Interpreter.getInstance()
            .module[Interpreter.getInstance().mainModule]!
            .statementList);
    if (result.type == StatementResultType.ERROR_RUNTIME_RESULT) {
      exitApp(result.error!, 1);
    }
  }

  return 0;
}
